<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
/* 4.使用 prompt() 输入一个密码并验证：
	- 密码长度为6-14个字符
	- 密码可以由 数字 或 字母 或 其他字符 组成(不含中文)
	- 判断密码安全性：
		强：包含数字、字母、其他字符中的三种字符
		中：包含数字、字母、其他字符中的两种字符
		弱：包含数字、字母、其他字符中的一种字符
	- 使用 document.write( )在页面输出各种验证结果 */

var password = prompt('请输入密码');
// console.log( password );// ' abc 123 '

// 判断是否为null或''
if (password) {
    // 去验证密码格式
    test(password);
} else{
    // password是 null 或 ''
    document.write('请输入正确的密码！');
}

// 去掉字符串中的空格
function myTrim(str){
    var result = '';
    // 遍历字符串
    for (var i = 0; i < str.length; i++){
        if (str[i] !== ' ') {
            // 如果当前字符不是空格，拼接起来
            result += str[i]
        }
    }
    return result;
}

// 验证密码
function test(str){
    // 去掉字符串中的空格
    str = myTrim(str);

    // 密码长度为6-14个字符
    if (str.length < 6 || str.length > 14) {
        document.write('请输入正确的密码！');
        return;// 结束函数执行
    }

    // 转成小写字母
    str = str.toLowerCase();

    // 判断密码字符的组成部分(数字 或 字母 或 其他字符)
    var hasNumber = 0;// 标记没有数字
    var hasLetter = 0;// 标记没有字母
    var hasOther = 0;// 标记没有其他字符

    // 遍历字符串（依次判断字符类型）
    for (var i = 0; i < str.length; i++){
        if (str.charCodeAt(i) >= 48 && str.charCodeAt(i) <= 57) {
            // 判断为数字
            hasNumber = 1;// 有数字
        } else if (str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122){
            // 判断为字母
            hasLetter = 1;// 有字母
        } else{
            // 判断为其他字符
            hasOther = 1;// 有其他字符
        }
    }

    var result = hasNumber + hasLetter + hasOther;

    // 判断密码安全性
    switch(result){
        case 3:
            document.write('密码安全性为：强');
            break;
        case 2:
            document.write('密码安全性为：中');
            break;
        case 1:
            document.write('密码安全性为：弱');
            break;
    }
}





</script>
</body>
</html>